Academy

Docker Images এবং Containers

Latest Technologies - ডকার (Docker) - NCTB BOOK

Docker Images এবং Containers হল Docker প্রযুক্তির মূল উপাদান। এগুলি সফটওয়্যার ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়াকে কার্যকর এবং সহজ করে তোলে। নিচে Docker Images এবং Containers-এর মধ্যে পার্থক্য এবং তাদের ভূমিকা বিস্তারিতভাবে আলোচনা করা হলো।

Docker Images

বর্ণনা

  • Docker Image হল একটি স্ট্যাটিক টেমপ্লেট যা একটি কন্টেইনার তৈরির জন্য প্রয়োজনীয় সমস্ত ফাইল, কোড, লাইব্রেরি এবং ডিপেন্ডেন্সি ধারণ করে। এটি অ্যাপ্লিকেশন এবং তার নির্ভরতাগুলির জন্য একটি পোর্টেবল প্যাকেজ।

ভূমিকা

  1. ব্লুপ্রিন্ট: Docker Images কন্টেইনারের ব্লুপ্রিন্ট হিসেবে কাজ করে। কন্টেইনার তৈরির সময় Docker Image ব্যবহার করা হয়।
  2. পোর্টেবিলিটি: Images এক স্থান থেকে অন্য স্থানে সহজে স্থানান্তরিত করা যায়, যা ডেভেলপমেন্ট এবং প্রোডাকশন পরিবেশে অ্যাপ্লিকেশনগুলি চালাতে সহায়ক।
  3. ভার্সন কন্ট্রোল: Docker Images-এর জন্য বিভিন্ন সংস্করণ তৈরি করা যায়। এটি অ্যাপ্লিকেশনটির বিভিন্ন সংস্করণ পরীক্ষা এবং পরিচালনার সুযোগ দেয়।
  4. Layered Architecture: Docker Images লেয়ার ভিত্তিক আর্কিটেকচারের উপর কাজ করে। প্রতিটি লেয়ার একটি নির্দিষ্ট পরিবর্তন বা আপডেট নির্দেশ করে। এটি ডেটা পুনঃব্যবহার ও স্টোরেজে দক্ষতা বৃদ্ধি করে।

Docker Containers

বর্ণনা

  • Docker Container হল একটি চলমান উদাহরণ যা Docker Image থেকে তৈরি হয়। কন্টেইনার হল একটি কার্যকরী পরিবেশ যা আলাদাভাবে চলতে পারে এবং একটি অ্যাপ্লিকেশন বা সেবার কার্যক্রম পরিচালনা করে।

ভূমিকা

  1. আইসোলেশন: Containers আলাদাভাবে চলতে পারে, যা একাধিক অ্যাপ্লিকেশনকে একই হোস্ট মেশিনে একসাথে পরিচালনা করতে দেয়। এটি সম্পদের দ্বন্দ্ব এড়াতে সহায়ক।
  2. গতি: Containers দ্রুত তৈরি এবং চালু হতে পারে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টের গতি বৃদ্ধি করে।
  3. শাসন: Containers-এর জীবনচক্র পরিচালনা করা সহজ, যেমন কন্টেইনার শুরু, থামানো, এবং মুছে ফেলা।
  4. সিস্টেমের স্বায়ত্তশাসন: Containers নিজস্ব ফাইল সিস্টেম এবং নেটওয়ার্কিং ধারণ করে, যা তাদের অন্য কন্টেইনার বা হোস্ট সিস্টেম থেকে আলাদা করে।

Docker Images এবং Containers-এর মধ্যে পার্থক্য

বিষয়Docker ImagesDocker Containers
বর্ণনাএকটি স্ট্যাটিক টেমপ্লেটএকটি চলমান উদাহরণ
সৃষ্টিকন্টেইনার তৈরির জন্য ব্যবহৃতDocker Image থেকে তৈরি হয়
স্থিতিImmutable (অপরিবর্তনীয়)Mutable (পরিবর্তনশীল)
সংরক্ষণসংরক্ষণাগারে (Docker Registry) থাকতে পারেকাজ করার সময় RAM এ থাকে
কর্মক্ষমতাকার্যকরী নয়; কন্টেইনার তৈরি করতে হয়কার্যকরী; অ্যাপ্লিকেশন চালায়
ভিত্তিলেয়ার ভিত্তিক আর্কিটেকচারের উপর কাজ করেDocker Image-এ নির্ভরশীল

সারসংক্ষেপ

Docker Images এবং Containers Docker-এর মূল উপাদান। Images হল স্ট্যাটিক ব্লুপ্রিন্ট যা কন্টেইনার তৈরির জন্য ব্যবহৃত হয়, আর Containers হল চলমান উদাহরণ যা অ্যাপ্লিকেশনকে আলাদাভাবে পরিচালনা করে। এই দুটির মধ্যে পার্থক্য বোঝা গুরুত্বপূর্ণ, কারণ এটি Docker প্রযুক্তি এবং কন্টেইনারাইজেশনের কার্যকারিতা বুঝতে সাহায্য করে। Docker Images এবং Containers-এর ব্যবহার ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টের প্রক্রিয়াকে সহজ এবং কার্যকর করে।

Content added By

Docker Image কী এবং এর ব্যবহার

Docker Image হলো একটি কনটেইনারের ব্লুপ্রিন্ট যা কনটেইনার চালানোর জন্য প্রয়োজনীয় সমস্ত ফাইল, কোড, লাইব্রেরি এবং নির্ভরশীলতা ধারণ করে। এটি একটি লেয়ারড ফাইল সিস্টেমের উপর ভিত্তি করে তৈরি, যা দ্রুত এবং কার্যকরভাবে কনটেইনার তৈরি করতে সহায়তা করে।

Docker Image কী?

বর্ণনা: Docker Image হল একটি ইমিউটেবল (অপরিবর্তনীয়) ফাইল সিস্টেম যা একটি অ্যাপ্লিকেশন এবং তার নির্ভরশীলতার সংকলন। এটি একটি কনটেইনার তৈরি করার সময় ব্যবহৃত হয় এবং এটি সাধারণত একাধিক লেয়ারে বিভক্ত থাকে।

লেয়ারিং: Docker Images বিভিন্ন লেয়ারের সমন্বয়ে তৈরি হয়। প্রতিটি লেয়ার পূর্ববর্তী লেয়ারের উপর নির্মিত হয় এবং শুধুমাত্র পরিবর্তিত ফাইলগুলি সংরক্ষণ করে, যা স্পেস সাশ্রয় করে।

ভার্সনিং: Docker Images সাধারণত একটি ট্যাগের সাথে থাকে (যেমন v1.0, latest), যা ব্যবহারকারীদের নির্দিষ্ট সংস্করণ ব্যবহার করতে সহায়তা করে।

Docker Image-এর ব্যবহার

অ্যাপ্লিকেশন প্যাকেজিং:

  • Docker Image ব্যবহার করে অ্যাপ্লিকেশন এবং তার নির্ভরশীলতাগুলি একত্রে প্যাকেজ করা যায়। এটি নিশ্চিত করে যে অ্যাপ্লিকেশনটি বিভিন্ন পরিবেশে একইভাবে কাজ করবে।

কনটেইনার তৈরি:

  • Docker Image থেকে একটি কনটেইনার তৈরি করা হয়। ব্যবহারকারীরা কনটেইনার চালানোর জন্য ইমেজ ব্যবহার করেন, যা দ্রুত এবং কার্যকরী হয়।

শেয়ারিং:

  • Docker Images সহজেই শেয়ার করা যায়। ব্যবহারকারীরা Docker Hub বা প্রাইভেট Registry-এর মাধ্যমে ইমেজগুলি আপলোড এবং ডাউনলোড করতে পারেন। এটি সহযোগিতার জন্য সহায়ক।

অবস্থান এবং কনফিগারেশন:

  • Docker Image ব্যবহার করে বিভিন্ন সিস্টেমের জন্য নির্দিষ্ট কনফিগারেশন এবং স্থানীয় সেটিংস প্রস্তুত করা যায়। এটি পরিবেশের মধ্যে কনফিগারেশন পরিবর্তন করার প্রয়োজন কমায়।

ভার্সন নিয়ন্ত্রণ:

  • Docker Images-এর ট্যাগিং সিস্টেম ব্যবহার করে বিভিন্ন সংস্করণের মধ্যে পার্থক্য বোঝা এবং নির্দিষ্ট সংস্করণগুলো ব্যবহার করা যায়।

CI/CD প্রক্রিয়া:

  • Docker Images CI/CD (Continuous Integration/Continuous Deployment) প্রক্রিয়ায় ব্যবহৃত হয়। এটি উন্নয়ন থেকে উৎপাদনে দ্রুত এবং স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি পরিবেশন করতে সাহায্য করে।

Docker Image তৈরি করা

Docker Image তৈরি করার জন্য সাধারণত একটি Dockerfile ব্যবহার করা হয়, যা ইমেজ তৈরি করার জন্য প্রয়োজনীয় নির্দেশাবলী ধারণ করে। এখানে একটি সাধারণ উদাহরণ:

# একটি বেস ইমেজ নির্বাচন করুন
FROM ubuntu:latest

# প্রয়োজনীয় প্যাকেজ ইনস্টল করুন
RUN apt-get update && apt-get install -y python3

# অ্যাপ্লিকেশন কপি করুন
COPY . /app

# অ্যাপ্লিকেশন চালানোর জন্য কমান্ড নির্ধারণ করুন
CMD ["python3", "/app/app.py"]

সারসংক্ষেপ

Docker Image হলো একটি কনটেইনারের ব্লুপ্রিন্ট যা অ্যাপ্লিকেশন এবং তার নির্ভরশীলতার সংকলন করে। এটি বিভিন্ন পরিবেশে অ্যাপ্লিকেশনগুলি সহজে তৈরি, পরিচালনা এবং শেয়ার করতে সহায়তা করে। Docker Image-কে একটি গুরুত্বপূর্ণ উপাদান হিসেবে বিবেচনা করা হয়, যা কনটেইনারাইজেশন প্রযুক্তির মৌলিক ভিত্তি গঠন করে।

Content added By

Docker Hub হল Docker-এর একটি পাবলিক রেজিস্ট্রি যেখানে ব্যবহারকারীরা Docker Images তৈরি, শেয়ার এবং সংরক্ষণ করতে পারেন। এটি একটি কেন্দ্রীয় স্থান যেখানে বিভিন্ন সফটওয়্যার ডেভেলপার এবং সংস্থাগুলি তাদের তৈরি করা Docker Images আপলোড করে, যাতে অন্যান্য ব্যবহারকারীরা সহজে সেগুলি ডাউনলোড ও ব্যবহার করতে পারে।

Docker Hub এর বৈশিষ্ট্য

পাবলিক এবং প্রাইভেট রেজিস্ট্রি:

  • Docker Hub ব্যবহারকারীদের জন্য পাবলিক এবং প্রাইভেট রেজিস্ট্রি সুবিধা প্রদান করে। পাবলিক ইমেজগুলি সবার জন্য খোলামেলা, যেখানে প্রাইভেট ইমেজগুলি শুধুমাত্র নির্ধারিত ব্যবহারকারীদের জন্য উপলব্ধ।

বিভিন্ন ইমেজ:

  • Docker Hub-এ হাজার হাজার প্রস্তুত ইমেজ উপলব্ধ রয়েছে, যা বিভিন্ন অ্যাপ্লিকেশন এবং পরিষেবা, যেমন Node.js, Python, MySQL, Nginx ইত্যাদির জন্য তৈরি।

স্বয়ংক্রিয় নির্মাণ:

  • Docker Hub স্বয়ংক্রিয় নির্মাণের সুবিধা প্রদান করে, যা GitHub বা Bitbucket থেকে কোড আপডেট হলে স্বয়ংক্রিয়ভাবে নতুন Docker Image তৈরি করে।

মেটাডেটা:

  • Docker Hub ব্যবহারকারীদের ইমেজের জন্য মেটাডেটা এবং ডোকুমেন্টেশন প্রদান করে, যা ইমেজের কার্যকারিতা এবং ব্যবহার সংক্রান্ত তথ্য সরবরাহ করে।

Docker Hub থেকে Image Pull করা

Docker Hub থেকে একটি Docker Image ডাউনলোড (যা "pull" বলা হয়) করার জন্য আপনাকে কিছু সহজ পদক্ষেপ অনুসরণ করতে হবে:

১. Docker ইনস্টল করা নিশ্চিত করুন

প্রথমে নিশ্চিত করুন যে আপনার সিস্টেমে Docker সঠিকভাবে ইনস্টল এবং চলমান রয়েছে। নিচের কমান্ডটি ব্যবহার করে Docker-এর সংস্করণ পরীক্ষা করুন:

docker --version

২. Docker Hub-এ লগইন করুন (ঐচ্ছিক)

যদি আপনি প্রাইভেট ইমেজগুলি অ্যাক্সেস করতে চান তবে আপনাকে Docker Hub-এ লগইন করতে হবে:

docker login

এটি আপনার Docker Hub ইউজারনেম এবং পাসওয়ার্ড চাইবে। পাবলিক ইমেজের জন্য লগইন করা বাধ্যতামূলক নয়।

৩. Docker Image Pull করুন

Docker Hub থেকে একটি ইমেজ পুল করতে, নিচের কমান্ডটি ব্যবহার করুন:

docker pull 

উদাহরণস্বরূপ, যদি আপনি nginx নামক একটি Docker Image ডাউনলোড করতে চান:

docker pull nginx

এটি Docker Hub থেকে nginx ইমেজ ডাউনলোড করবে।

৪. পুল করা ইমেজ তালিকাভুক্ত করুন

আপনার সিস্টেমে পুল করা ইমেজগুলি দেখতে, নিচের কমান্ডটি ব্যবহার করুন:

docker images

সারসংক্ষেপ

Docker Hub হল Docker Images-এর জন্য একটি গুরুত্বপূর্ণ রেজিস্ট্রি যা পাবলিক এবং প্রাইভেট ইমেজ শেয়ার করার সুবিধা প্রদান করে। Docker Hub থেকে ইমেজ পুল করা সহজ; আপনাকে শুধু docker pull কমান্ডটি ব্যবহার করতে হবে। এই প্রক্রিয়ার মাধ্যমে আপনি প্রয়োজনীয় ইমেজগুলি দ্রুত ডাউনলোড করতে এবং কন্টেইনার চালানোর জন্য প্রস্তুত করতে পারবেন। Docker Hub ব্যবহার করে আপনার ডেভেলপমেন্ট এবং ডিপ্লয়মেন্ট প্রক্রিয়া আরও কার্যকরী এবং সুবিধাজনক হবে।

Content added By

Custom Docker Image তৈরি করা Dockerfile ব্যবহার করে

Custom Docker Image তৈরি করা একটি সাধারণ প্রক্রিয়া, যা Dockerfile ব্যবহার করে করা হয়। Dockerfile হল একটি টেক্সট ফাইল যা একটি Docker Image তৈরি করার জন্য প্রয়োজনীয় সমস্ত নির্দেশাবলী ধারণ করে। এখানে একটি কাস্টম Docker Image তৈরি করার জন্য ধাপগুলো দেওয়া হলো।

কাস্টম Docker Image তৈরি করার ধাপ

১. Dockerfile তৈরি করা

একটি নতুন ডিরেক্টরি তৈরি করুন যেখানে আপনার অ্যাপ্লিকেশন এবং Dockerfile থাকবে:

mkdir my-app
cd my-app

একটি Dockerfile তৈরি করুন:

touch Dockerfile

আপনার পছন্দের টেক্সট এডিটর ব্যবহার করে Dockerfile এ নির্দেশাবলী লিখুন। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো:

# বেস ইমেজ নির্বাচন করুন
FROM python:3.9-slim

# কাজের ডিরেক্টরি তৈরি করুন
WORKDIR /usr/src/app

# প্রয়োজনীয় ফাইল কপি করুন
COPY requirements.txt ./

# নির্ভরশীলতা ইনস্টল করুন
RUN pip install --no-cache-dir -r requirements.txt

# অ্যাপ্লিকেশন ফাইল কপি করুন
COPY . .

# অ্যাপ্লিকেশন চালানোর জন্য কমান্ড নির্ধারণ করুন
CMD ["python", "./app.py"]

২. requirements.txt ফাইল তৈরি করা

আপনার অ্যাপ্লিকেশনের নির্ভরশীলতা সংজ্ঞায়িত করতে একটি requirements.txt ফাইল তৈরি করুন:

flask
requests

৩. অ্যাপ্লিকেশন ফাইল তৈরি করা

app.py নামে একটি সিম্পল Python অ্যাপ্লিকেশন ফাইল তৈরি করুন:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello, Docker!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

৪. Docker Image তৈরি করা

  1. আপনার Dockerfile এবং অ্যাপ্লিকেশন ফাইলগুলো তৈরির পর, টার্মিনালে নিচের কমান্ডটি চালান:এখানে my-custom-image হল আপনার কাস্টম Docker Image-এর নাম।
docker build -t my-custom-image .

৫. Docker Image পরীক্ষা করা

  1. আপনার নতুন Docker Image তালিকায় দেখার জন্য নিচের কমান্ডটি ব্যবহার করুন:
docker images

৬. কনটেইনার তৈরি এবং চালানো

  1. আপনার তৈরি করা কাস্টম Docker Image থেকে একটি কনটেইনার চালাতে নিচের কমান্ডটি ব্যবহার করুন:এখানে -d অপশন কনটেইনারটিকে ব্যাকগ্রাউন্ডে চালু করে এবং -p 5000:5000 পোর্ট মেপিং তৈরি করে।
docker run -d -p 5000:5000 my-custom-image

৭. অ্যাপ্লিকেশন অ্যাক্সেস করা

  1. আপনার ব্রাউজার খুলুন এবং http://localhost:5000-এ যান। আপনি "Hello, Docker!" বার্তা দেখতে পাবেন।

সারসংক্ষেপ

কাস্টম Docker Image তৈরি করা Dockerfile ব্যবহার করে একটি সহজ প্রক্রিয়া। আপনি বেস ইমেজ নির্বাচন, নির্ভরশীলতা ইনস্টল করা, এবং অ্যাপ্লিকেশন ফাইলগুলো কপি করে একটি কাস্টম Image তৈরি করতে পারেন। এই প্রক্রিয়া ডেভেলপমেন্ট ও ডিপ্লয়মেন্টের সময় সাহায্য করে এবং আপনার অ্যাপ্লিকেশনটি অন্যান্য পরিবেশে একইভাবে কাজ করে তা নিশ্চিত করে।

Content added By

Container কী এবং Container Lifecycle Management

কনটেইনার কী?

কনটেইনার হল একটি হালকা এবং বিচ্ছিন্ন পরিবেশ যেখানে সফটওয়্যার অ্যাপ্লিকেশন এবং তার সমস্ত নির্ভরশীলতা একত্রে চলতে পারে। এটি মূলত অপারেটিং সিস্টেমের একটি স্তরে চলে এবং এতে সমস্ত প্রয়োজনীয় ফাইল, লাইব্রেরি, এবং কনফিগারেশন অন্তর্ভুক্ত থাকে। কনটেইনারগুলি ভার্চুয়াল মেশিনের তুলনায় অনেক হালকা এবং দ্রুত, কারণ তারা একই কনসিস্টেন্ট কির্নেল শেয়ার করে।

কনটেইনারের বৈশিষ্ট্য:

  1. স্বায়ত্তশাসিত: কনটেইনারগুলি সম্পূর্ণ বিচ্ছিন্ন এবং একে অপরের সাথে সংঘর্ষ ছাড়াই কাজ করে।
  2. পোর্টেবল: কনটেইনারগুলি এক পরিবেশ থেকে অন্য পরিবেশে সহজে স্থানান্তর করা যায়।
  3. দ্রুত শুরু: কনটেইনারগুলি সাধারণত কয়েক সেকেন্ডের মধ্যে চালু হতে পারে।
  4. রিসোর্স দক্ষতা: কনটেইনারগুলি তুলনামূলকভাবে কম রিসোর্স ব্যবহার করে।

কনটেইনার Lifecycle Management

কনটেইনারের লাইফসাইকেল ম্যানেজমেন্ট হল কনটেইনারগুলির সৃষ্টি, পরিচালনা, এবং মোছার প্রক্রিয়া। এটি কনটেইনার পরিচালনার জন্য বিভিন্ন কার্যক্রম অন্তর্ভুক্ত করে। নিচে কনটেইনার লাইফসাইকেলের মূল পর্যায়গুলি উল্লেখ করা হলো:

১. কনটেইনার তৈরি (Creation)

  • কিভাবে: কনটেইনার তৈরি করতে সাধারণত একটি Docker ইমেজ ব্যবহার করা হয়। নিচের কমান্ডটি একটি নতুন কনটেইনার তৈরি করতে ব্যবহৃত হয়:
docker run -d --name my-container my-image
  • বিবরণ: এখানে -d কনটেইনারকে ব্যাকগ্রাউন্ডে চালানোর জন্য এবং --name কনটেইনারের একটি নাম নির্ধারণ করার জন্য ব্যবহৃত হয়।

২. কনটেইনার চালানো (Running)

  • কিভাবে: কনটেইনারটি তৈরি করার পর এটি চালু হয়। কনটেইনার চলাকালীন এটি বিভিন্ন কার্যক্রম সম্পাদন করে।
  • বিবরণ: কনটেইনার চালানোর সময় আপনি লগ, নেটওয়ার্কিং, এবং অন্যান্য কার্যক্রম পর্যবেক্ষণ করতে পারেন।

৩. কনটেইনার মনিটরিং (Monitoring)

  • কিভাবে: কনটেইনার চলাকালীন তার অবস্থা পর্যবেক্ষণ করতে হয়।
  • বিবরণ: docker ps কমান্ড ব্যবহার করে চলমান কনটেইনারগুলির তালিকা দেখা যায় এবং docker logs দিয়ে লগ তথ্য দেখা যায়।

৪. কনটেইনার থামানো (Stopping)

  • কিভাবে: কনটেইনার থামানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:
docker stop my-container
  • বিবরণ: এই কমান্ডটি চলমান কনটেইনারটি বন্ধ করে দেয়।

৫. কনটেইনার মুছে ফেলা (Removing)

  • কিভাবে: কনটেইনার মুছে ফেলতে নিচের কমান্ডটি ব্যবহার করুন:
docker rm my-container
  • বিবরণ: এই কমান্ডটি কনটেইনারটি সম্পূর্ণভাবে মুছে দেয়। কনটেইনার মুছে ফেলতে হলে অবশ্যই এটি বন্ধ থাকতে হবে।

৬. কনটেইনার পুনরায় চালানো (Restarting)

  • কিভাবে: কনটেইনার পুনরায় চালাতে নিচের কমান্ডটি ব্যবহার করুন:
docker start my-container
  • বিবরণ: এই কমান্ডটি বন্ধ কনটেইনারটিকে আবার চালু করে।

সারসংক্ষেপ

কনটেইনার হল একটি হালকা, বিচ্ছিন্ন পরিবেশ যা সফটওয়্যার অ্যাপ্লিকেশন চালানোর জন্য ব্যবহৃত হয়। কনটেইনার লাইফসাইকেল ম্যানেজমেন্ট হল কনটেইনার তৈরির, চালানোর, মনিটরিং করার, থামানোর, মুছে ফেলার এবং পুনরায় চালানোর প্রক্রিয়া। Docker CLI ব্যবহার করে সহজেই এই কার্যক্রমগুলি সম্পন্ন করা যায়, যা উন্নয়ন এবং উৎপাদনের জন্য কার্যকরী।

Content added By
Promotion